package com.xhwl.logistics.converter;

import com.xhwl.common.dto.cent.vehicle.feign.VehiclePageQuery;
import com.xhwl.logistics.bo.input.PageBO;
import com.xhwl.logistics.constant.VehicleConstant;
import com.xhwl.logistics.dto.query.PageDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

@Component
public class ToPageBO {

    public PageBO toPageBO(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO);

        return pageBO;
    }

    public PageBO toPageBOForBlacklist(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_DESC);

        return pageBO;
    }

    public PageBO toPageBOForPassage(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_ASC);

        return pageBO;
    }

    public PageBO toPageBOForParkingLot(VehiclePageQuery vehiclePageQuery) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(vehiclePageQuery, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_ASC);

        return pageBO;
    }

    public PageBO toPageBOForAccessRecord(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("access.id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_DESC);

        return pageBO;
    }

    public PageBO toPageBOForAccessRecord(PageBO pageBO) {
        PageBO newPageBO = new PageBO();

        newPageBO.setPageNumber(1);
        newPageBO.setPageSize(pageBO.getPageSize());
        newPageBO.setSortColumn("access.id");
        newPageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_DESC);

        return newPageBO;
    }

    public PageBO toPageBOForAccessRecordPlateNumberDuplicateRemoval(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_DESC);

        return pageBO;
    }

    public PageBO toPageBOForCar(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");

        pageBO.setSortColumn("car.id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_DESC);

        return pageBO;
    }

    public PageBO toPageBOForCard(PageDTO pageDTO) {
        PageBO pageBO = new PageBO();

        BeanUtils.copyProperties(pageDTO, pageBO, "sortColumn", "sortDirection");
        pageBO.setSortColumn("id");
        pageBO.setSortDirection(VehicleConstant.SORT_DIRECTION_ASC);

        return pageBO;
    }

}
